package com.smart.community.region.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 店铺费用记录VO
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-09-30
 */
@Data
@Schema(description = "店铺费用记录VO")
public class ShopFeeRecordVO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 费用记录ID
     */
    @Schema(description = "费用记录ID", example = "1")
    private Long id;
    
    /**
     * 店铺ID
     */
    @Schema(description = "店铺ID", example = "1")
    private Long shopId;
    
    /**
     * 店铺名称
     */
    @Schema(description = "店铺名称", example = "张三便利店")
    private String shopName;
    
    /**
     * 费用类型：PROPERTY-物业费，WATER-水费，ELECTRIC-电费，GAS-燃气费，SANITATION-卫生费
     */
    @Schema(description = "费用类型", example = "PROPERTY")
    private String feeType;
    
    /**
     * 费用类型名称
     */
    @Schema(description = "费用类型名称", example = "Property Fee")
    private String feeTypeName;
    
    /**
     * 费用金额
     */
    @Schema(description = "费用金额", example = "1000.00")
    private BigDecimal feeAmount;
    
    /**
     * 费用周期
     */
    @Schema(description = "费用周期", example = "2025-01")
    private String feePeriod;
    
    /**
     * 费用开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "费用开始日期", example = "2025-01-01")
    private LocalDate feeStartDate;
    
    /**
     * 费用结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "费用结束日期", example = "2025-01-31")
    private LocalDate feeEndDate;
    
    /**
     * 缴费状态：0-未缴费，1-已缴费，2-逾期
     */
    @Schema(description = "缴费状态", example = "0")
    private Integer paymentStatus;
    
    /**
     * 缴费状态名称
     */
    @Schema(description = "缴费状态名称", example = "Unpaid")
    private String paymentStatusName;
    
    /**
     * 缴费日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "缴费日期", example = "2025-01-15 10:00:00")
    private LocalDateTime paymentDate;
    
    /**
     * 缴费方式
     */
    @Schema(description = "缴费方式", example = "CASH")
    private String paymentMethod;
    
    /**
     * 发票号码
     */
    @Schema(description = "发票号码", example = "INV202501150001")
    private String invoiceNumber;
    
    /**
     * 备注
     */
    @Schema(description = "备注", example = "费用记录备注")
    private String remark;
    
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "创建时间", example = "2025-09-30 10:00:00")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "更新时间", example = "2025-09-30 10:00:00")
    private LocalDateTime updateTime;
    
    /**
     * 创建人
     */
    @Schema(description = "创建人", example = "1")
    private Long createBy;
    
    /**
     * 更新人
     */
    @Schema(description = "更新人", example = "1")
    private Long updateBy;
}
